home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / pp / pp-6.0 / Tools / tables / tjoin / tjoin1.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-12-18  |  3.7 KB  |  201 lines

  1. /* tjoin1.c: */
  2.  
  3. # ifndef lint
  4. static char Rcsid[] = "@(#)$Header: /xtel/pp/pp-beta/Tools/tables/tjoin/RCS/tjoin1.c,v 6.0 1991/12/18 20:35:29 jpo Rel $";
  5. # endif
  6.  
  7. /*
  8.  * $Header: /xtel/pp/pp-beta/Tools/tables/tjoin/RCS/tjoin1.c,v 6.0 1991/12/18 20:35:29 jpo Rel $
  9.  *
  10.  * $Log: tjoin1.c,v $
  11.  * Revision 6.0  1991/12/18  20:35:29  jpo
  12.  * Release 6.0
  13.  *
  14.  */
  15.  
  16.  
  17.  
  18. #include        <stdio.h>
  19. #include    "tjoin.h"
  20.  
  21. extern    char    *av0;
  22. extern    int    yylineno, Debug;
  23. extern    HOST    *HostList;
  24. extern    CHAN    *ChanList;
  25. extern char    *FastInChanList();
  26.  
  27.  
  28.  
  29. FreeChanInfo (list)
  30. register CHAN    *list;
  31. {
  32.     register CHAN    *startlist = list,
  33.             *chptr;
  34.  
  35.     for (; list != NULL; list = chptr) {
  36.         chptr = list -> ch_next;
  37.         if (Debug == 1)      
  38.             printf ("FreeChanInfo %s\n", list->ch.name);
  39.         if (list)
  40.             free ((char *)list);
  41.     }
  42.  
  43.     startlist = NULL;
  44. }
  45.  
  46.  
  47.  
  48. RejectHost (host)
  49. register HOST    *host;
  50. {
  51.     register CHAN    *c1;
  52.  
  53.     fprintf (stderr,
  54. "%s: Channel present, but LHS & RHS hosts differ at line %d\n",
  55.          av0, yylineno - 1);
  56.  
  57.     for (c1 = host -> hst_chan; c1 != NULL; c1 = c1 -> ch_next) {
  58.         if (Debug == 1) 
  59.             printf ("Free %x - RejectHost ChanName\n", c1->ch.name);
  60.  
  61.         if (c1 -> ch.name) {
  62.             free (c1 -> ch.name);
  63.             c1 -> ch.name = NULL;
  64.         }
  65.     }
  66.  
  67.     if (Debug == 1) 
  68.         printf ("Free %x - RejectHost HostName\n", host -> hst_name);
  69.  
  70.     if (host -> hst_name) {
  71.         free (host -> hst_name);
  72.         host -> hst_name = NULL;
  73.     }
  74. }
  75.  
  76.  
  77. StartChanList (str)
  78. char    *str;
  79. {
  80.     if (ChanList != NULL) {
  81.         fprintf (stderr, "%s: StartChanList - ChanList not NULL\n", 
  82.              av0);
  83.         exit (1);
  84.     }
  85.  
  86.     if ((ChanList = (CHAN *) malloc (sizeof (CHAN))) == NULL) {
  87.         fprintf (stderr, "%s: StartChanList - No Memory\n", av0);
  88.         exit (1);
  89.     }
  90.  
  91.     if (Debug == 1)
  92.         printf ("StartChanList - %s\n", str ? str : "null");
  93.  
  94.     bzero ((char *)ChanList, sizeof(*ChanList));
  95.     ChanList -> ch.name = str;
  96. }
  97.  
  98.  
  99. AddToChanList (str)
  100. char    *str;
  101. {
  102.     register CHAN    *chan;
  103.  
  104.     if ((chan = (CHAN *) malloc (sizeof (CHAN))) == NULL) {
  105.         fprintf (stderr, "%s: AddToChanList - No Memory\n");
  106.         exit (1);
  107.     }
  108.  
  109.     if (Debug == 1) 
  110.         printf ("AddToChanList - %s\n", str ? str : "null");
  111.  
  112.     bzero ((char *)chan, sizeof(*chan));
  113.     chan -> ch_next = ChanList;
  114.     ChanList = chan;
  115.     chan -> ch.name = str;
  116. }
  117.  
  118.  
  119. StartHostList (str)
  120. char    *str;
  121. {
  122.     if (HostList != NULL) {
  123.         fprintf (stderr, "%s: StartHostList - HostList not NULL\n", 
  124.              av0);
  125.         exit (1);
  126.     }
  127.  
  128.     if ((HostList = (HOST *) malloc (sizeof (HOST))) == NULL) {
  129.         fprintf (stderr, "%s: StartHostList - No Memory\n", av0);
  130.         exit (1);
  131.     }
  132.  
  133.     if (Debug == 1) 
  134.         printf ("StartHostList - %s\n", str ? str : "null");
  135.  
  136.     bzero ((char *)HostList, sizeof(*HostList));
  137.     HostList -> hst_name = str;
  138.     HostList -> hst_chan = ChanList;
  139. }
  140.  
  141.  
  142. AddToHostList (str)
  143. char    *str;
  144. {
  145.     register HOST    *host;
  146.  
  147.     if ((host = (HOST *) malloc (sizeof (HOST))) == NULL) {
  148.         fprintf (stderr, "%s: AddToHostList - No Memory\n");
  149.         exit (1);
  150.     }
  151.  
  152.     if (Debug == 1) 
  153.         printf ("AddToHostList - %s\n", str  ?  str : "null");
  154.  
  155.     bzero ((char *)host, sizeof(*host));
  156.     host -> hst_next = HostList;
  157.     HostList = host;
  158.     host -> hst_name = str;
  159.     host -> hst_chan = ChanList;
  160. }
  161.  
  162.  
  163. char *FastInChanList (list, name)
  164. register CHAN    *list;
  165. char        *name;
  166. {
  167.     if (name == NULL)
  168.         return (NULL);
  169.     for (; list != NULL; list = list -> ch_next)
  170.         if (list -> ch.name == name)
  171.             return (list -> ch.name);
  172.     return (NULL);
  173. }
  174.  
  175.  
  176. char *InChanList (list, name)
  177. register CHAN    *list;
  178. char        *name;
  179. {
  180.     if (name == NULL)
  181.         return (NULL);
  182.     for (; list != NULL; list = list -> ch_next)
  183.         if (strcmp (list -> ch.name, name) == 0)
  184.             return (list -> ch.name);
  185.     return (NULL);
  186. }
  187.  
  188.  
  189. CHAN *InsertChan (list, item)
  190. register CHAN    *list, *item;
  191. {
  192.     register CHAN    *c1;
  193.  
  194.     if (list == NULL)
  195.         return (item);
  196.     for (c1 = list; c1 -> ch_next != NULL; c1 = c1 -> ch_next)
  197.         continue;
  198.     c1 -> ch_next = item;
  199.     return (list);
  200. }
  201.